package shujia.day12.homework;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.TreeSet;

import java.util.Scanner;

/*
    由控制台按照固定格式输入学生信息，包括学号，姓名，年龄信息，当输入的内容 为exit退出；
    将输入的学生信息分别封装到一个Student对象中，再将每个Student  对象加入到一个集合中，要求集合中的元素按照年龄大小正序排序；
    最后遍历集合， 将集合中学生信息写入到记事本，每个学生数据占单独一行。
推荐步骤：
a)    创建Student类，并指定按照年龄正序排列
b)    通过控制台输入多个不同Student信息。格式规定为：编号#姓名#年龄
c)    取出字符串中相应信息放入Student对象，并将Student加入到集合中
d)    遍历集合的过程中将学生的信息输入到记事本 难点：
e)    如何指定学生按照年龄正序排列
f)     如果从字符串“编号#姓名#年龄 ”中提取学生信息
 */
public class Test4 {
    public static void main(String[] args) throws IOException {
        TreeSet<Student1> set1 = new TreeSet<>(new Comparator<Student1>() {
            @Override
            public int compare(Student1 o1, Student1 o2) {
                //元素按照年龄大小正序排序；
                int i1 = o1.getAge() - o2.getAge();
                //年龄一样，姓名不一定一样
                int i2 = (i1 == 0) ? o1.getName().compareTo(o2.getName()) : i1;
                // 年龄一样，姓名一样，学号不一定一样
                return (i2 == 0) ? o1.getId() - o2.getId() : i2;
            }
        });

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        Student1 stu = null;
        while (true){
            System.out.println("请输入学生信息：");
            String stuInfo = sc.next();
            if("exit".equals(stuInfo)){
                break;
            }

            String[] stuInfoArr = stuInfo.split("#");
            int id = Integer.parseInt(stuInfoArr[0]);
            String name = stuInfoArr[1];
            int age = Integer.parseInt(stuInfoArr[2]);

            stu = new Student1(id,name,age);
            set1.add(stu);
        }

        BufferedWriter bw = new BufferedWriter(new FileWriter("src/shujia/day12/homework/stu.csv"));

        for (Student1 student1 : set1) {
            int id = student1.getId();
            String name = student1.getName();
            int age = student1.getAge();

            String info = id+","+name+","+age;

            bw.write(info);
            bw.newLine();
            bw.flush();
        }

        bw.close();
    }
}
